<?php
/**
 * 日志类
 *
 * @package    log
 * @version    $Id$
 */
class log
{
    /**
     * 单个日志文件大小限制
     *
     * @var int 字节数
     */
    private static $i_log_size = VANE_LOG_SIZE; // 1024 * 1024 * 5 = 5M
    
    /**
     * 写日志
     *
     * @param string $s_message 日志信息
     * @param string $s_type    日志类型
     */
    private static function write($s_message, $s_type = 'log')
    {
		if(!VANE_LOG_SWITCH){
			return;
		}
        // 检查日志目录是否可写
         if ( !file_exists(VANE_LOG_PATH) ) {
            @mkdir(VANE_LOG_PATH);
        }
        chmod(VANE_LOG_PATH,0777);
        if (!is_writable(VANE_LOG_PATH)) exit('VANE_LOG_SWITCH is not writeable !');
		date_default_timezone_set('Etc/GMT-8');
    	$s_now_time = date('[Y-m-d H:i:s]');
        $s_now_day  = date('Y_m_d');
        // 根据类型设置日志目标位置
        $s_target   = VANE_LOG_PATH;
        switch($s_type)
        {
            case 'debug':
                $s_target .= 'debug_' . $s_now_day . '.log';
                break;
            case 'error':
                $s_target .= 'error_' . $s_now_day . '.log';
                break;
            case 'info':
                $s_target .= 'info_' . $s_now_day . '.log';
                break;
            default:
                $s_target .= 'log_' . $s_now_day . '.log';
                break;
        }
        
        //检测日志文件大小, 超过配置大小则重命名
        if (file_exists($s_target) && self::$i_log_size <= filesize($s_target)) {
            $s_file_name = substr(basename($s_target), 0, strrpos(basename($s_target), '.log')). '_' . time() . '.log';
            rename($s_target, dirname($s_target) . DS . $s_file_name);
        }
        clearstatcache();
        // 写日志, 返回成功与否
        return error_log("$s_now_time $s_message\n", 3, $s_target);
    }

	public static function debug($msg) {
			self::write($msg,"debug");
	}
	public static function error($msg) {
			self::write($msg,"error");
	}
	public static function info($msg) {
			self::write($msg,"info");
	}
}